package cl.ncx.cmvrc.persistence.base.entities.localizacion;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import cl.ncx.cmvrc.persistence.base.entities.solicitud.Solicitud;

/**
 * Direccion entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "direccion", schema = "base")
@SequenceGenerator(name = "direccion_seque", sequenceName = "base.direccion_direccion_id_seq")
public class Direccion implements java.io.Serializable {

	// Fields

	private Integer direccionId;
	private Comuna comuna;
	private String calle;
	private String numeracion;
	private String interseccion;
	private String referencia;
	private Set<Solicitud> solicituds = new HashSet<Solicitud>(0);

	// Constructors

	/** default constructor */
	public Direccion() {
	}

	/** minimal constructor */
	public Direccion(Integer direccionId, Comuna comuna, String calle,
			String numeracion) {
		this.direccionId = direccionId;
		this.comuna = comuna;
		this.calle = calle;
		this.numeracion = numeracion;
	}

	/** full constructor */
	public Direccion(Integer direccionId, Comuna comuna, String calle,
			String numeracion, String interseccion, String referencia,
			Set<Solicitud> solicituds) {
		this.direccionId = direccionId;
		this.comuna = comuna;
		this.calle = calle;
		this.numeracion = numeracion;
		this.interseccion = interseccion;
		this.referencia = referencia;
		this.solicituds = solicituds;
	}

	// Property accessors
	@Id
	@Column(name = "direccion_id", unique = true, nullable = false)
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "direccion_seque")
	public Integer getDireccionId() {
		return this.direccionId;
	}

	public void setDireccionId(Integer direccionId) {
		this.direccionId = direccionId;
	}

	@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	@JoinColumn(name = "comuna", nullable = false)
	public Comuna getComuna() {
		return this.comuna;
	}

	public void setComuna(Comuna comuna) {
		this.comuna = comuna;
	}

	@Column(name = "calle", nullable = false)
	public String getCalle() {
		return this.calle;
	}

	public void setCalle(String calle) {
		this.calle = calle;
	}

	@Column(name = "numeracion", nullable = false)
	public String getNumeracion() {
		return this.numeracion;
	}

	public void setNumeracion(String numeracion) {
		this.numeracion = numeracion;
	}

	@Column(name = "interseccion")
	public String getInterseccion() {
		return this.interseccion;
	}

	public void setInterseccion(String interseccion) {
		this.interseccion = interseccion;
	}

	@Column(name = "referencia")
	public String getReferencia() {
		return this.referencia;
	}

	public void setReferencia(String referencia) {
		this.referencia = referencia;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "direccion")
	public Set<Solicitud> getSolicituds() {
		return this.solicituds;
	}

	public void setSolicituds(Set<Solicitud> solicituds) {
		this.solicituds = solicituds;
	}

}